package com.autumn.annotations.bean.config.filter;

import org.springframework.core.io.Resource;
import org.springframework.core.type.AnnotationMetadata;
import org.springframework.core.type.ClassMetadata;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.core.type.filter.TypeFilter;

import java.io.IOException;

/**
 * ClassName: TypeFilterImpl
 *
 * @Description:
 * @Author: wangqiuyang
 * @Date: 2021/12/28 下午3:57
 * History:
 * <author>          <time>          <version>          <desc>
 * wangqiuyang    2021/12/28 下午3:57   @Version 1.0        描述
 */
public class TypeFilterImpl implements TypeFilter {

    /**
    * Description: 过滤实利 的方法
    * @param metadataReader the metadata reader for the target class  （获取到的当前类的 meta）
    * @param metadataReaderFactory a factory for obtaining metadata readers for other classes (such as superclasses and interfaces) 【meta类工厂 使用它可以获得到其他的类的meta信息】
    * @return: boolean true 要 false 不要
    * @author: wangqiuyang
    * @Date: 2021/12/28 下午3:58
    */
    @Override
    public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {

        // 获取当前类的注解信息
        AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata();

        // 获取当前类的信息
        ClassMetadata classMetadata = metadataReader.getClassMetadata();

        // 获取当前类的資源信息 比如 ： 类路径
        Resource resource = metadataReader.getResource();

        System.out.println("当前类名 --> " + classMetadata.getClassName());

        if (classMetadata.getClassName().contains("a")) {
            // 如果类名中包含 a 则注入
            return true;
        }
        return true;
    }
}
